home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…rary 6 (Reseller Edition) / Apple Ref. & Pres. Lib.v6.0.toast / pc / 3-Presentations / Markets / Education / HyperCard In Education / RotoRooter / background_2660.txt < prev    next >
Text File  |  1990-04-02  |  23KB  |  996 lines

  1. -- background: 2660 from stack: in
  2. -- bmap block id: 4192
  3. -- flags: 4000
  4. -- background id: 0
  5. -- name: Function Plotter
  6. ----- HyperTalk script -----
  7. on domainExp
  8.   global dExpL, dExpR
  9.   if the hilight of bkgnd button "Limit Domain" is true then
  10.     if the hilight of bkgnd button domainLLT is true then
  11.       put "x >" && field domainLL into dExpL
  12.     else
  13.       put "x ‚â•" && field domainLL into dExpL
  14.     end if
  15.     if the hilight of bkgnd button domainULT is true then
  16.       put "x <" && field domainUL into dExpR
  17.     else
  18.       put "x ‚â§" && field domainUL into dExpR
  19.     end if
  20.   else
  21.     put empty into dExpL
  22.     put empty into dExpR
  23.   end if
  24. end domainExp
  25.  
  26. function leftOfDomain x
  27. global dExpL
  28. if dExpL is empty then
  29.   return false
  30. else
  31.   return not the value of dExpL
  32. end if
  33. end leftOfDomain
  34.  
  35. function inDomain x
  36. global dExpL, dExpR
  37. if dExpL is empty then
  38.   return true
  39. else
  40.   return the value of dExpL and the value of dExpR
  41. end if
  42. end inDomain
  43.  
  44. function rightOfDomain x
  45. global dExpR
  46. if dExpR is empty then
  47.   return false
  48. else
  49.   return not the value of dExpR
  50. end if
  51. end rightOfDomain
  52.  
  53. on stdScale
  54.   global xCorner, yCorner
  55.   put -10 into xCorner
  56.   put -10 into yCorner
  57.   put 1 into field xUnit
  58.   put 1 into field yUnit
  59. end stdScale
  60.  
  61. on shiftGraph dir
  62.   global gHSize, gVSize, xCorner, yCorner
  63.   if dir is "Left" then
  64.     subtract gHSize * field xUnit from xCorner
  65.   else
  66.     if dir is "Right" then
  67.       add gHSize * field xUnit to xCorner
  68.     else
  69.       if dir is "Up" then
  70.         add gVSize * field yUnit to yCorner
  71.       else
  72.         if dir is "Down" then
  73.           subtract gVSize * field yUnit from yCorner
  74.         else
  75.           if dir is "Origin" then
  76.             put - gHSize * field xUnit into xCorner
  77.             put - gVSize * field yUnit into yCorner
  78.           end if
  79.         end if
  80.       end if
  81.     end if
  82.   end if
  83. end shiftGraph
  84.  
  85. on zoomOut mag
  86.   global gHSize, gVSize, xCorner, yCorner
  87.   add ( 1 - mag ) * gHSize * field xUnit to xCorner
  88.   multiply field xUnit by mag
  89.   add ( 1 - mag ) * gVSize * field yUnit to yCorner
  90.   multiply field yUnit by mag
  91. end zoomOut
  92.  
  93. on zoomIn mag
  94.   global gLeft, gTop, gRight, gBottom, gHSize, gVSize
  95.   global xCorner, yCorner
  96.   put "Click on the center of the new graph." into message
  97.   put false into ok
  98.   repeat until ok
  99.     wait until the mouseClick is true
  100.     get the mouseLoc
  101.     put item 1 of it into x0
  102.     put item 2 of it into y0
  103.     if x0 < gLeft or x0 > gRight or y0 < gTop or y0 > gBottom then
  104.       answer "You must click inside the graph box."
  105.     else
  106.       put true into ok
  107.     end if
  108.   end repeat
  109.   put empty into message
  110.   hide message
  111.   put field xUnit * round( xPtoC( x0 ) / field xUnit ) into xCenter
  112.   put field yUnit * round( yPtoC( y0 ) / field yUnit ) into yCenter
  113.   divide field xUnit by mag
  114.   divide field yUnit by mag
  115.   put xCenter - gHSize * field xUnit into xCorner
  116.   put yCenter - gVSize * field yUnit into yCorner
  117. end zoomIn
  118.  
  119. function xPtoC p
  120. global gLeft, gUnit, xCorner
  121. return xCorner + ( p - gLeft ) / gUnit * field xUnit
  122. end xPtoC
  123.  
  124. function yPtoC p
  125. global gBottom, gUnit, yCorner
  126. return yCorner - ( p - gBottom ) / gUnit * field yUnit
  127. end yPtoC
  128.  
  129. function xCtoP c
  130. global gLeft, gRight, gUnit, xCorner
  131. return gLeft + round(( c - xCorner ) / field xUnit * gUnit )
  132. end xCtoP
  133.  
  134. function yCtoP c
  135. global gTop, gBottom, gUnit, yCorner
  136. return gBottom - round(( c - yCorner ) / field yUnit * gUnit )
  137. end yCtoP
  138.  
  139. function xCtoPClip c
  140. global gLeft, gRight, gUnit, xCorner
  141. get gLeft + round(( c - xCorner ) / field xUnit * gUnit )
  142. if it < gLeft then
  143.   return gLeft
  144. else
  145.   if it > gRight then
  146.     return gRight
  147.   else
  148.     return it
  149.   end if
  150. end if
  151. end xCtoPClip
  152.  
  153. function yCtoPClip c
  154. global gTop, gBottom, gUnit, yCorner
  155. get gBottom - round(( c - yCorner ) / field yUnit * gUnit )
  156. if it < gTop then
  157.   return gTop
  158. else
  159.   if it > gBottom then
  160.     return gBottom
  161.   else
  162.     return it
  163.   end if
  164. end if
  165. end yCtoPClip
  166.  
  167. function mConstrain hMouse
  168. global mLeftBound, mRightBound
  169. if hMouse < mLeftBound then
  170.   return mLeftBound
  171. else
  172.   if hMouse > mRightBound then
  173.     return mRightBound
  174.   else
  175.     return hMouse
  176.   end if
  177. end if
  178. end mConstrain
  179.  
  180. on drawGraphBox
  181.   global gLeft, gTop, gUnit, gHSize, gVSize
  182.   global gHMid, gVMid, gRight, gBottom
  183.   choose rectangle tool
  184.   set lineSize to 1
  185.   drag from gLeft, gTop to gRight, gBottom
  186.   choose line tool
  187.   put gHSize - 1 into nTicks
  188.   put gLeft into x
  189.   repeat while x <= gRight
  190.     if nTicks = gHSize - 1 then
  191.       put 4 into tickLen
  192.       put 0 into nTicks
  193.     else
  194.       put 2 into tickLen
  195.       add 1 to nTicks
  196.     end if
  197.     drag from x, gTop to x, gTop - tickLen
  198.     drag from x, gBottom to x, gBottom + tickLen
  199.     add gUnit to x
  200.   end repeat
  201.   put gVSize - 1 into nTicks
  202.   put gTop into y
  203.   repeat while y <= gBottom
  204.     if nTicks = gVSize - 1 then
  205.       put 4 into tickLen
  206.       put 0 into nTicks
  207.     else
  208.       put 2 into tickLen
  209.       add 1 to nTicks
  210.     end if
  211.     drag from gLeft, y to gLeft - tickLen, y
  212.     drag from gRight, y to gRight + tickLen, y
  213.     add gUnit to y
  214.   end repeat
  215.   choose browse tool
  216.   set the rect of field yTop to gLeft - 54, gTop - 6, gLeft - 4, gTop + 6
  217.   set the rect of field yUnitLabel to gLeft - 54, gVMid - 11, gLeft - 4, gVMid + 1
  218.   set the rect of field yUnit to gLeft - 54, gVMid, gLeft - 4, gVMid + 12
  219.   set the rect of field yBottom to gLeft - 54, gBottom - 6, gLeft - 4, gBottom + 6
  220.   set the rect of field xLeft to gLeft - 25, gBottom + 7, gLeft + 25, gBottom + 19
  221.   set the rect of field xUnitLabel to gHMid - 49, gBottom + 7, gHMid + 1, gBottom + 19
  222.   set the rect of field xUnit to gHMid, gBottom + 7, gHMid + 50, gBottom + 19
  223.   set the rect of field xRight to gRight - 25, gBottom + 7, gRight + 25, gBottom + 19
  224. end drawGraphBox
  225.  
  226. on eraseGraph
  227.   global gLeft, gTop, gRight, gBottom
  228.   choose select tool
  229.   drag from gLeft + 1, gTop + 1 to gRight - 1, gBottom - 1
  230.   doMenu "Clear Picture"
  231. end eraseGraph
  232.  
  233. on eraseFgnd
  234.   global gLeft, gTop, gRight, gBottom
  235.   choose select tool
  236.   drag from gLeft - 4, gTop - 4 to gRight + 4, gBottom + 4
  237.   doMenu "Clear Picture"
  238. end eraseFgnd
  239.  
  240. on drawAxes
  241.   global gLeft, gTop, gRight, gBottom, gUnit, xCorner, yCorner
  242.   global gYofXAxis, gXofYAxis
  243.   put xCorner into field xLeft
  244.   put xPtoC( gRight ) into field xRight
  245.   put yCorner into field yBottom
  246.   put yPtoC( gTop ) into field yTop
  247.   put yCtoP( 0 ) into gYofXAxis
  248.   put xCtoP( 0 ) into gXofYAxis
  249.   choose line tool
  250.   set lineSize to 1
  251.   set pattern to 22
  252.   if gYofXAxis > gTop and gYofXAxis < gBottom then
  253.     drag from gLeft, gYofXAxis to gRight, gYofXAxis with optionKey
  254.   end if
  255.   if gXofYAxis > gLeft and gXofYAxis < gRight then
  256.     drag from gXofYAxis, gTop to gXofYAxis, gBottom with optionKey
  257.   end if
  258. end drawAxes
  259.  
  260. function yCalc x
  261. global fxCmd, gTop, gBottom
  262. do fxCmd
  263. return y
  264. end yCalc
  265.  
  266. on plotFunction
  267.   global gLeft, gRight, fxCmd, xPLim, yPLim, xNLim, yNLim
  268.   global mkrSet, mLeftBound, mRightBound
  269.   if line 1 of field fx is empty then
  270.     answer "Specify f(x) first."
  271.   else
  272.     if rightOfDomain( field xLeft ) or leftOfDomain( field xRight ) then
  273.       answer "The domain of f(x) is outside this view."
  274.     else
  275.       put "put" && line 1 of field fx && "into y" into fxCmd
  276.       put "Now plotting f(x) =" && line 1 of field fx into message
  277.       set the editBkgnd to true
  278.       choose line tool
  279.       set lineSize to 1
  280.       put gLeft into mLeftBound
  281.       repeat while leftOfdomain( xPtoC( mLeftBound ))
  282.         add 1 to mLeftBound
  283.       end repeat
  284.       put mLeftBound into mRightBound
  285.       put mLeftBound into xScreen0
  286.       put xScreen0 into xPLim
  287.       put xScreen0 into xNLim
  288.       put yCalc( xPtoC( xScreen0 )) into y0
  289.       put yCtoPClip( y0 ) into yScreen0
  290.       put y0 into yPLim
  291.       put y0 into yNLim
  292.       repeat with xScreen = mLeftBound + 1 to gRight
  293.         get xPtoC( xScreen )
  294.         if rightOfDomain( it ) then exit repeat
  295.         put xScreen into mRightBound
  296.         get yCalc( it )
  297.         put yCtoPClip( it ) into yScreen
  298.         drag from xScreen0, yScreen0 to xScreen, yScreen
  299.         if it < yNLim then
  300.           put xScreen into xNLim
  301.           put it into yNLim
  302.         else
  303.           if it > yPLim then
  304.             put xScreen into xPLim
  305.             put it into yPLim
  306.           end if
  307.         end if
  308.         put xScreen into xScreen0
  309.         put yScreen into yScreen0
  310.       end repeat
  311.       put xPtoC( xPLim ) into xPLim
  312.       put xPtoC( xNLim ) into xNLim
  313.       put empty into message
  314.       hide message
  315.       choose browse tool
  316.       if mLeftBound = mRightBound then
  317.         answer "The domain of f(x) is too small for this view."
  318.       end if
  319.       if mkrSet is true then send showMarkers to this card
  320.     end if
  321.   end if
  322. end plotFunction
  323.  
  324.  
  325.  
  326.  
  327. -- part 3 (field)
  328. -- low flags: 01
  329. -- high flags: 0001
  330. -- rect: left=324 top=328 right=340 bottom=374
  331. -- title width / last selected line: 0
  332. -- icon id / first selected line: 0 / 0
  333. -- text alignment: 0
  334. -- font id: 2
  335. -- text size: 9
  336. -- style flags: 0
  337. -- line height: 12
  338. -- part name: xUnit
  339. ----- HyperTalk script -----
  340. on closeField
  341.   if field xUnit <= 0 then
  342.     answer "x unit must be positive."
  343.     put 1 into field xUnit
  344.   end if
  345. end closeField
  346.  
  347.  
  348.  
  349. -- part 1 (field)
  350. -- low flags: 00
  351. -- high flags: 0002
  352. -- rect: left=156 top=30 right=45 bottom=505
  353. -- title width / last selected line: 0
  354. -- icon id / first selected line: 0 / 0
  355. -- text alignment: 0
  356. -- font id: 2
  357. -- text size: 10
  358. -- style flags: 0
  359. -- line height: 13
  360. -- part name: fx
  361. ----- HyperTalk script -----
  362. on closeField
  363.   eraseMarkers
  364. end closeField
  365.  
  366.  
  367.  
  368. -- part 4 (field)
  369. -- low flags: 01
  370. -- high flags: 0001
  371. -- rect: left=150 top=201 right=213 bottom=200
  372. -- title width / last selected line: 0
  373. -- icon id / first selected line: 0 / 0
  374. -- text alignment: 1
  375. -- font id: 2
  376. -- text size: 9
  377. -- style flags: 0
  378. -- line height: 12
  379. -- part name: yUnit
  380. ----- HyperTalk script -----
  381. on closeField
  382.   if field yUnit <= 0 then
  383.     answer "y unit must be positive."
  384.     put 1 into field yUnit
  385.   end if
  386. end closeField
  387.  
  388.  
  389.  
  390. -- part 10 (field)
  391. -- low flags: 01
  392. -- high flags: 0001
  393. -- rect: left=419 top=328 right=340 bottom=469
  394. -- title width / last selected line: 0
  395. -- icon id / first selected line: 0 / 0
  396. -- text alignment: 1
  397. -- font id: 2
  398. -- text size: 9
  399. -- style flags: 0
  400. -- line height: 12
  401. -- part name: xRight
  402.  
  403.  
  404. -- part 11 (field)
  405. -- low flags: 01
  406. -- high flags: 0001
  407. -- rect: left=179 top=328 right=340 bottom=229
  408. -- title width / last selected line: 0
  409. -- icon id / first selected line: 0 / 0
  410. -- text alignment: 1
  411. -- font id: 2
  412. -- text size: 9
  413. -- style flags: 0
  414. -- line height: 12
  415. -- part name: xLeft
  416.  
  417.  
  418. -- part 12 (field)
  419. -- low flags: 01
  420. -- high flags: 0001
  421. -- rect: left=150 top=315 right=327 bottom=200
  422. -- title width / last selected line: 0
  423. -- icon id / first selected line: 0 / 0
  424. -- text alignment: 65535
  425. -- font id: 2
  426. -- text size: 9
  427. -- style flags: 0
  428. -- line height: 12
  429. -- part name: yBottom
  430.  
  431.  
  432. -- part 13 (field)
  433. -- low flags: 01
  434. -- high flags: 0001
  435. -- rect: left=150 top=75 right=87 bottom=200
  436. -- title width / last selected line: 0
  437. -- icon id / first selected line: 0 / 0
  438. -- text alignment: 65535
  439. -- font id: 2
  440. -- text size: 9
  441. -- style flags: 0
  442. -- line height: 12
  443. -- part name: yTop
  444.  
  445.  
  446. -- part 16 (button)
  447. -- low flags: 00
  448. -- high flags: A004
  449. -- rect: left=456 top=228 right=244 bottom=506
  450. -- title width / last selected line: 0
  451. -- icon id / first selected line: 0 / 0
  452. -- text alignment: 1
  453. -- font id: 0
  454. -- text size: 12
  455. -- style flags: 0
  456. -- line height: 16
  457. -- part name: 2x
  458. ----- HyperTalk script -----
  459. on mouseUp
  460.   zoomIn 2
  461.   updateGraph
  462. end mouseUp
  463.  
  464.  
  465.  
  466. -- part 17 (button)
  467. -- low flags: 00
  468. -- high flags: A004
  469. -- rect: left=456 top=246 right=262 bottom=506
  470. -- title width / last selected line: 0
  471. -- icon id / first selected line: 0 / 0
  472. -- text alignment: 1
  473. -- font id: 0
  474. -- text size: 12
  475. -- style flags: 0
  476. -- line height: 16
  477. -- part name: 10x
  478. ----- HyperTalk script -----
  479. on mouseUp
  480.   zoomIn 10
  481.   updateGraph
  482. end mouseUp
  483.  
  484.  
  485.  
  486. -- part 18 (button)
  487. -- low flags: 00
  488. -- high flags: A004
  489. -- rect: left=456 top=264 right=280 bottom=506
  490. -- title width / last selected line: 0
  491. -- icon id / first selected line: 0 / 0
  492. -- text alignment: 1
  493. -- font id: 0
  494. -- text size: 12
  495. -- style flags: 0
  496. -- line height: 16
  497. -- part name: Std.
  498. ----- HyperTalk script -----
  499. on mouseUp
  500.   stdScale
  501.   updateGraph
  502. end mouseUp
  503.  
  504.  
  505.  
  506. -- part 19 (button)
  507. -- low flags: 00
  508. -- high flags: A004
  509. -- rect: left=456 top=282 right=298 bottom=506
  510. -- title width / last selected line: 0
  511. -- icon id / first selected line: 0 / 0
  512. -- text alignment: 1
  513. -- font id: 0
  514. -- text size: 12
  515. -- style flags: 0
  516. -- line height: 16
  517. -- part name: 1/2x
  518. ----- HyperTalk script -----
  519. on mouseUp
  520.   zoomOut 2
  521.   updateGraph
  522. end mouseUp
  523.  
  524.  
  525.  
  526. -- part 20 (button)
  527. -- low flags: 00
  528. -- high flags: A004
  529. -- rect: left=456 top=300 right=316 bottom=506
  530. -- title width / last selected line: 0
  531. -- icon id / first selected line: 0 / 0
  532. -- text alignment: 1
  533. -- font id: 0
  534. -- text size: 12
  535. -- style flags: 0
  536. -- line height: 16
  537. -- part name: 1/10x
  538. ----- HyperTalk script -----
  539. on mouseUp
  540.   zoomOut 10
  541.   updateGraph
  542. end mouseUp
  543.  
  544.  
  545.  
  546. -- part 31 (button)
  547. -- low flags: 00
  548. -- high flags: A004
  549. -- rect: left=456 top=108 right=124 bottom=506
  550. -- title width / last selected line: 0
  551. -- icon id / first selected line: 0 / 0
  552. -- text alignment: 1
  553. -- font id: 0
  554. -- text size: 12
  555. -- style flags: 0
  556. -- line height: 16
  557. -- part name: Left
  558. ----- HyperTalk script -----
  559. on mouseUp
  560.   shiftGraph "Left"
  561.   updateGraph
  562. end mouseUp
  563.  
  564.  
  565.  
  566. -- part 32 (button)
  567. -- low flags: 00
  568. -- high flags: A004
  569. -- rect: left=456 top=162 right=178 bottom=506
  570. -- title width / last selected line: 0
  571. -- icon id / first selected line: 0 / 0
  572. -- text alignment: 1
  573. -- font id: 0
  574. -- text size: 12
  575. -- style flags: 0
  576. -- line height: 16
  577. -- part name: Up
  578. ----- HyperTalk script -----
  579. on mouseUp
  580.   shiftGraph "Up"
  581.   updateGraph
  582. end mouseUp
  583.  
  584.  
  585.  
  586. -- part 33 (button)
  587. -- low flags: 00
  588. -- high flags: A004
  589. -- rect: left=456 top=144 right=160 bottom=506
  590. -- title width / last selected line: 0
  591. -- icon id / first selected line: 0 / 0
  592. -- text alignment: 1
  593. -- font id: 0
  594. -- text size: 12
  595. -- style flags: 0
  596. -- line height: 16
  597. -- part name: Origin
  598. ----- HyperTalk script -----
  599. on mouseUp
  600.   shiftGraph "Origin"
  601.   updateGraph
  602. end mouseUp
  603.  
  604.  
  605.  
  606. -- part 34 (button)
  607. -- low flags: 00
  608. -- high flags: A004
  609. -- rect: left=456 top=180 right=196 bottom=506
  610. -- title width / last selected line: 0
  611. -- icon id / first selected line: 0 / 0
  612. -- text alignment: 1
  613. -- font id: 0
  614. -- text size: 12
  615. -- style flags: 0
  616. -- line height: 16
  617. -- part name: Down
  618. ----- HyperTalk script -----
  619. on mouseUp
  620.   shiftGraph "Down"
  621.   updateGraph
  622. end mouseUp
  623.  
  624.  
  625.  
  626. -- part 35 (button)
  627. -- low flags: 00
  628. -- high flags: A004
  629. -- rect: left=456 top=126 right=142 bottom=506
  630. -- title width / last selected line: 0
  631. -- icon id / first selected line: 0 / 0
  632. -- text alignment: 1
  633. -- font id: 0
  634. -- text size: 12
  635. -- style flags: 0
  636. -- line height: 16
  637. -- part name: Right
  638. ----- HyperTalk script -----
  639. on mouseUp
  640.   shiftGraph "Right"
  641.   updateGraph
  642. end mouseUp
  643.  
  644.  
  645.  
  646. -- part 36 (button)
  647. -- low flags: 00
  648. -- high flags: A005
  649. -- rect: left=121 top=52 right=70 bottom=229
  650. -- title width / last selected line: 0
  651. -- icon id / first selected line: 0 / 0
  652. -- text alignment: 1
  653. -- font id: 0
  654. -- text size: 12
  655. -- style flags: 0
  656. -- line height: 16
  657. -- part name: Limit Domain
  658. ----- HyperTalk script -----
  659. on mouseUp
  660.   if the highlight of bkgnd button "Limit Domain" is true then
  661.     put field xLeft into field domainLL
  662.     put field xRight into field domainUL
  663.     send mouseUp to bkgnd button domainLLE
  664.     send mouseUp to bkgnd button domainULE
  665.     set the lockText of field domainLL to false
  666.     set the lockText of field domainUL to false
  667.     set the rect of bkgnd button dLimitMask to 230,45,451,46
  668.   else
  669.     set the rect of bkgnd button dLimitMask to 230,45,451,76
  670.     set the lockText of field domainLL to true
  671.     set the lockText of field domainUL to true
  672.   end if
  673.   domainExp
  674. end mouseUp
  675.  
  676.  
  677.  
  678. -- part 37 (field)
  679. -- low flags: 01
  680. -- high flags: 0002
  681. -- rect: left=232 top=53 right=68 bottom=314
  682. -- title width / last selected line: 0
  683. -- icon id / first selected line: 0 / 0
  684. -- text alignment: 65535
  685. -- font id: 2
  686. -- text size: 10
  687. -- style flags: 0
  688. -- line height: 13
  689. -- part name: domainLL
  690. ----- HyperTalk script -----
  691. on openField
  692.   global oldVal
  693.   put field domainLL into oldVal
  694. end openField
  695.  
  696. on closeField
  697.   global oldVal
  698.   domainExp
  699.   if field domainUL < field domainLL or ( field domainUL = field domainLL and not inDomain( field domainUL )) then
  700.     answer "Not a valid domain."
  701.     put oldVal into field domainLL
  702.     domainExp
  703.   end if
  704. end closeField
  705.  
  706.  
  707.  
  708. -- part 39 (button)
  709. -- low flags: 00
  710. -- high flags: 0006
  711. -- rect: left=313 top=47 right=61 bottom=331
  712. -- title width / last selected line: 0
  713. -- icon id / first selected line: 0 / 0
  714. -- text alignment: 1
  715. -- font id: 0
  716. -- text size: 12
  717. -- style flags: 0
  718. -- line height: 16
  719. -- part name: domainLLT
  720. ----- HyperTalk script -----
  721. on mouseUp
  722.   if field domainLL = field domainUL then
  723.     answer "Not a valid domain."
  724.   else
  725.     set the hilight of bkgnd button domainLLE to false
  726.     set the hilight of bkgnd button domainLLT to true
  727.     domainExp
  728.   end if
  729. end mouseUp
  730.  
  731.  
  732.  
  733. -- part 40 (button)
  734. -- low flags: 00
  735. -- high flags: 4006
  736. -- rect: left=313 top=60 right=74 bottom=331
  737. -- title width / last selected line: 0
  738. -- icon id / first selected line: 0 / 0
  739. -- text alignment: 1
  740. -- font id: 0
  741. -- text size: 12
  742. -- style flags: 0
  743. -- line height: 16
  744. -- part name: domainLLE
  745. ----- HyperTalk script -----
  746. on mouseUp
  747.   set the hilight of bkgnd button domainLLT to false
  748.   set the hilight of bkgnd button domainLLE to true
  749.   domainExp
  750. end mouseUp
  751.  
  752.  
  753.  
  754. -- part 41 (button)
  755. -- low flags: 00
  756. -- high flags: 0006
  757. -- rect: left=350 top=47 right=61 bottom=368
  758. -- title width / last selected line: 0
  759. -- icon id / first selected line: 0 / 0
  760. -- text alignment: 1
  761. -- font id: 0
  762. -- text size: 12
  763. -- style flags: 0
  764. -- line height: 16
  765. -- part name: domainULT
  766. ----- HyperTalk script -----
  767. on mouseUp
  768.   if field domainLL = field domainUL then
  769.     answer "Not a valid domain."
  770.   else
  771.     set the hilight of bkgnd button domainULE to false
  772.     set the hilight of bkgnd button domainULT to true
  773.     domainExp
  774.   end if
  775. end mouseUp
  776.  
  777.  
  778.  
  779. -- part 42 (button)
  780. -- low flags: 00
  781. -- high flags: 4006
  782. -- rect: left=350 top=60 right=74 bottom=368
  783. -- title width / last selected line: 0
  784. -- icon id / first selected line: 0 / 0
  785. -- text alignment: 1
  786. -- font id: 0
  787. -- text size: 12
  788. -- style flags: 0
  789. -- line height: 16
  790. -- part name: domainULE
  791. ----- HyperTalk script -----
  792. on mouseUp
  793.   set the hilight of bkgnd button domainULT to false
  794.   set the hilight of bkgnd button domainULE to true
  795.   domainExp
  796. end mouseUp
  797.  
  798.  
  799.  
  800. -- part 44 (field)
  801. -- low flags: 01
  802. -- high flags: 0002
  803. -- rect: left=367 top=53 right=68 bottom=449
  804. -- title width / last selected line: 0
  805. -- icon id / first selected line: 0 / 0
  806. -- text alignment: 0
  807. -- font id: 2
  808. -- text size: 10
  809. -- style flags: 0
  810. -- line height: 13
  811. -- part name: domainUL
  812. ----- HyperTalk script -----
  813. on openField
  814.   global oldVal
  815.   put field domainUL into oldVal
  816. end openField
  817.  
  818. on closeField
  819.   global oldVal
  820.   domainExp
  821.   if field domainUL < field domainLL or ( field domainUL = field domainLL and not inDomain( field domainUL )) then
  822.     answer "Not a valid domain."
  823.     put oldVal into field domainUL
  824.     domainExp
  825.   end if
  826. end closeField
  827.  
  828.  
  829.  
  830. -- part 45 (button)
  831. -- low flags: 00
  832. -- high flags: 0001
  833. -- rect: left=230 top=45 right=76 bottom=451
  834. -- title width / last selected line: 0
  835. -- icon id / first selected line: 0 / 0
  836. -- text alignment: 1
  837. -- font id: 0
  838. -- text size: 12
  839. -- style flags: 0
  840. -- line height: 16
  841. -- part name: dLimitMask
  842.  
  843.  
  844. -- part 46 (button)
  845. -- low flags: 00
  846. -- high flags: 8004
  847. -- rect: left=456 top=52 right=70 bottom=506
  848. -- title width / last selected line: 0
  849. -- icon id / first selected line: 0 / 0
  850. -- text alignment: 1
  851. -- font id: 0
  852. -- text size: 12
  853. -- style flags: 0
  854. -- line height: 16
  855. -- part name: Plot
  856. ----- HyperTalk script -----
  857. on mouseUp
  858.   if field fx is empty then
  859.     answer "Specify f(x) first."
  860.   else
  861.     updateGraph
  862.     plotFunction
  863.   end if
  864. end mouseUp
  865.  
  866.  
  867.  
  868. -- part 48 (field)
  869. -- low flags: 01
  870. -- high flags: 0001
  871. -- rect: left=150 top=190 right=202 bottom=200
  872. -- title width / last selected line: 0
  873. -- icon id / first selected line: 0 / 0
  874. -- text alignment: 1
  875. -- font id: 2
  876. -- text size: 9
  877. -- style flags: 0
  878. -- line height: 12
  879. -- part name: yUnitLabel
  880. ----- HyperTalk script -----
  881. on closeField
  882.   if field yUnit <= 0 then
  883.     answer "y unit must be positive."
  884.     put 1 into field yUnit
  885.   end if
  886. end closeField
  887.  
  888.  
  889.  
  890. -- part 49 (field)
  891. -- low flags: 01
  892. -- high flags: 0001
  893. -- rect: left=275 top=328 right=340 bottom=325
  894. -- title width / last selected line: 0
  895. -- icon id / first selected line: 0 / 0
  896. -- text alignment: 65535
  897. -- font id: 2
  898. -- text size: 9
  899. -- style flags: 0
  900. -- line height: 12
  901. -- part name: xUnitLabel
  902. ----- HyperTalk script -----
  903. on closeField
  904.   if field xUnit <= 0 then
  905.     answer "x unit must be positive."
  906.     put 1 into field xUnit
  907.   end if
  908. end closeField
  909.  
  910.  
  911.  
  912. -- part 51 (field)
  913. -- low flags: 01
  914. -- high flags: 0001
  915. -- rect: left=120 top=30 right=45 bottom=156
  916. -- title width / last selected line: 0
  917. -- icon id / first selected line: 0 / 0
  918. -- text alignment: 65535
  919. -- font id: 2
  920. -- text size: 10
  921. -- style flags: 0
  922. -- line height: 13
  923. -- part name: fxLabel
  924. ----- HyperTalk script -----
  925. on closeField
  926.   if field yUnit <= 0 then
  927.     answer "y unit must be positive."
  928.     put 1 into field yUnit
  929.   end if
  930. end closeField
  931.  
  932.  
  933.  
  934. -- part 52 (field)
  935. -- low flags: 01
  936. -- high flags: 0001
  937. -- rect: left=456 top=85 right=108 bottom=506
  938. -- title width / last selected line: 0
  939. -- icon id / first selected line: 0 / 0
  940. -- text alignment: 1
  941. -- font id: 2
  942. -- text size: 10
  943. -- style flags: 0
  944. -- line height: 11
  945. -- part name: shiftLabel
  946. ----- HyperTalk script -----
  947. on closeField
  948.   if field yUnit <= 0 then
  949.     answer "y unit must be positive."
  950.     put 1 into field yUnit
  951.   end if
  952. end closeField
  953.  
  954.  
  955.  
  956. -- part 53 (field)
  957. -- low flags: 01
  958. -- high flags: 0001
  959. -- rect: left=456 top=205 right=228 bottom=506
  960. -- title width / last selected line: 0
  961. -- icon id / first selected line: 0 / 0
  962. -- text alignment: 1
  963. -- font id: 2
  964. -- text size: 10
  965. -- style flags: 0
  966. -- line height: 11
  967. -- part name: changeLabel
  968. ----- HyperTalk script -----
  969. on closeField
  970.   if field yUnit <= 0 then
  971.     answer "y unit must be positive."
  972.     put 1 into field yUnit
  973.   end if
  974. end closeField
  975.  
  976.  
  977.  
  978. -- part 55 (button)
  979. -- low flags: 00
  980. -- high flags: 0001
  981. -- rect: left=126 top=317 right=339 bottom=161
  982. -- title width / last selected line: 0
  983. -- icon id / first selected line: 2162 / 2162
  984. -- text alignment: 1
  985. -- font id: 0
  986. -- text size: 12
  987. -- style flags: 0
  988. -- line height: 16
  989. -- part name: Return
  990. ----- HyperTalk script -----
  991. on mouseUp
  992.   visual effect iris close
  993.   go to card Title
  994. end mouseUp
  995.  
  996.